import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)

export default new Vuex.Store({
    state: { //存储状态(数据)
        token: null,
        userInfo: null //存储登录用户的个人信息数据
    },
    getters: { //类似组件里面的计算属性computed
        isLogin(state) { //判断是否有登录，有token并且有用户数据代表已经登陆
            console.log(state.token, 'state.userInfo=>', state.userInfo);
            console.log('isLogin的返回值==>', state.token && state.userInfo);
            return state.token && state.userInfo; //返回true 或 false
        }
    },
    mutations: { //使用时通过commit提交
        //将获取到的参数穿给state.token
        setToken(state, payload) {
            state.token = payload;
        },
        //将获取到的参数穿给state.userInfo
        setUser(state, payload) {
            console.log('setUser成功,psyload为=>', payload);
            state.userInfo = payload;
        }
    },
    actions: {
        getUser(context) {
            let token = context.state.token;
            //获取用户信息
            axios({
                method: "GET",
                url: 'http://47.115.51.185/api/user',
                headers: { //设置http请求的头信息
                    //在头部里面通过Authori-zation 这个字段传递token
                    'Authori-zation': 'Bearer ' + token,
                    // 'token':token
                },
                data: {
                    token: token
                }
            }).then(d => {
                //将获取到的登录用户的数据通过提交setUser这个
                //mutations来设置操作state里面的用户数据，在那存储起来
                // console.log('获取用户数据成功==>', d.data.data);
                context.commit('setUser', d.data.data);
            })
        }
    },
    modules: {}
})